﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Threading;

namespace covjece
{
    public class ZutiIgrac : Igrac, Handler
    {           //i ovdje moze singltone
        private Handler _sljedeci;
        public static int piunaUIgri = 0;
        
        public ZutiIgrac(MainWindow m)
        {
            this.m = m;
            piunaUIgri = 0;
            for (int i = 0; i < 4; i++)
            {
                _piuni.Add(new zutiKrug(m));
                m.staviNaPocetno(_piuni[i], i);
                (_piuni[i] as zutiKrug).pozicijaUKuci = i;
            }

        }

        public void postaviSljedeceg(Handler sljedeci)
        {
            _sljedeci = sljedeci;
        }


        public void igraj()
        {


            zutiKrug krug = null;
            foreach (UserControl u in _piuni)
            {
                zutiKrug pom = u as zutiKrug;
                if (pom.aktivan == true)
                {
                    krug = pom;
                    (u as zutiKrug).aktivan = false;
                }
            }


           
            if(Igrac.odigrao == false)
            {
                 if (krug != null && krug._upravljanje.dajStanje() == "cekaj" && brojPomjeranja == 6)
                {
                    piunaUIgri++;
                    krug._upravljanje.postaviStanje(new Ubaci());
                    krug._upravljanje.radi();
                    (krug._upravljanje.piun as zutiKrug).pozicija = 30;
                    krug._upravljanje.postaviStanje(new Pomjeri());
                }


                else if (krug != null && krug._upravljanje.dajStanje() == "pomjeri" && (!(krug.pozicija + brojPomjeranja >= 30 && krug.pozicija + brojPomjeranja < 36) || krug.prosaoPola == false) && krug.uKucici == false)
                {
                    krug._upravljanje.radi();
                    if (krug.pozicija < 10 && krug.pozicija != -1) krug.prosaoPola = true;
                }


                else if (krug != null && krug._upravljanje.dajStanje() == "pomjeri" && (krug.pozicija + brojPomjeranja) >= 30 && (krug.pozicija + brojPomjeranja) < 36 && krug.prosaoPola == true && krug.uKucici == false)
                {
                    int pom = krug.pozicija + brojPomjeranja - 29;
                    brojPomjeranja = brojPomjeranja - pom;
                    krug._upravljanje.radi();

                    krug._upravljanje.postaviStanje(new UbaciUKucu());
                    brojPomjeranja = pom - 1;
                    krug._upravljanje.radi();
                    krug.uKucici = true;
                    krug.pozicija = pom;
                }
                 else if (krug != null && krug.uKucici == false)
                 {
                     if (piunaUIgri == 1) m.postaviDugme(true);
                     else m.postaviDugme(false);
                 }
                else if (krug != null && krug.uKucici == true)
                {

                    if (Igrac.brojPomjeranja + krug.pozicija < 5)
                    {

                        Igrac.brojPomjeranja = krug.pozicija + Igrac.brojPomjeranja - 1;
                        krug._upravljanje.radi();
                    }
                }
            }
            if (krug != null)
                Igrac.odigrao = true;
           

            Thread.Sleep(40);



            if (!Aplikacija.gotovo) _sljedeci.igraj();

        }
    }
}
